# 搜索引擎接口
from abc import ABCMeta, abstractmethod


class AbstractSearchEngine(object, metaclass=ABCMeta):
    # 构造函数
    def __init__(self):
        pass

    # 添加语料
    # 读取文件内容,将文件路径作为ID,连同内容进行语料处理
    def add_corpus(self, file_path):
        with open(file_path, 'r') as fin:
            text = fin.read()
        self.process_corpus(file_path, text)

    # 抽象函数——处理语料
    # 处理语料内容,并将处理好的内容保存起来,作为索引
    @abstractmethod
    def process_corpus(self, id, text):
        pass

    # 抽象函数——搜索
    # 根据关键词query,通过索引搜索数据并返回
    @abstractmethod
    def search(self, query):
        pass
